/**
 * 版权所有(C)，上海勾芒信息科技，2017，所有权利保留。
 * 
 * 项目名：	cards-web
 * 文件名：	WxComponentAppCodeService.java
 * 模块说明：	
 * 修改历史：
 * 2017年5月24日 - Debenson - 创建。
 */
package me.chanjar.weixin.component.api.app;

import java.io.InputStream;
import java.util.List;

import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.component.bean.code.AuditStatusQueryResponse;
import me.chanjar.weixin.component.bean.code.WxAppAudit;
import me.chanjar.weixin.component.bean.code.WxAppCategory;
import me.chanjar.weixin.component.bean.code.WxAppCode;

/**
 * 小程序代码管理
 * 
 * @author Debenson
 * @since 0.1
 */
public interface WxCompMaCodeService {

  /**
   * 第三方平台在开发者工具上开发完成后，可点击上传，代码将上传到开放平台草稿箱中，第三方平台可选择将代码添加到代码中，获得代码模版ID后，
   * 可调用以下接口进行代码管理
   * 
   * @param code
   *          小程序代码
   * @throws WxErrorException
   */
  void commit(WxAppCode code) throws WxErrorException;

  /**
   * 获取体验小程序的体验二维码
   * 
   * @throws WxErrorException
   */
  InputStream getQrcode() throws WxErrorException;

  /**
   * 获取授权小程序帐号的可选类目
   * 
   * @return
   * @throws WxErrorException
   */
  List<WxAppCategory> getCategory() throws WxErrorException;

  /**
   * 获取小程序的第三方提交代码的页面配置
   * 
   * @return
   */
  List<String> getPage() throws WxErrorException;

  /**
   * 将第三方提交的代码包提交审核（仅供第三方开发者代小程序调用）
   * 
   * @param auditItems
   *          提交审核项的一个列表（至少填写1项，至多填写5项）
   * @return 审核编号
   * @throws WxErrorException
   */
  String submitAudit(WxAppAudit... auditItems) throws WxErrorException;

  /**
   * 获取第三方提交的审核版本的审核状态
   * 
   * @param auditId
   *          提交审核时获得的审核id
   * @return
   */
  AuditStatusQueryResponse getAuditStatus(String auditId) throws WxErrorException;

  /**
   * 发布已通过审核的小程序
   * 
   * @throws WxErrorException
   */
  void release() throws WxErrorException;

}
